using AiQiuQuan.Sport.Model.Models;
using AiQiuQuan.Sport.Core;

namespace AiQiuQuan.Sport.WebApi.Services
{
    /// <summary>
    /// 用户管理
    /// </summary>
    public interface IBaseUserService : ITransientDependency
    {
        /// <summary>
        /// 登录
        /// </summary>
        Task<UserTokenResultDto> LoginAsync();

        /// <summary>
        /// 查询
        /// </summary>
        Task<BaseUserDto> GetAsync(Guid id);

        /// <summary>
        /// 更新
        /// </summary>
        Task<UnaryResult> UpdateAsync(BaseUserUpdateDto request);

        /// <summary>
        /// 查询用户信息，含用户角色
        /// </summary>
        Task<BaseUserDto> QueryAsync(BaseUserRoleRequestDto request);

        /// <summary>
        /// 分页查询
        /// </summary>
        Task<PageResult<BaseUserDto>> PageListAsync(BaseUserPageRequestDto model);

        /// <summary>
        /// 用户实名认证
        /// </summary>
        Task<UnaryResult> AuthenticateIDAsync(BaseUserAuthorizeRequestDto request);

        /// <summary>
        /// 用户微信openid认证，获取微信认证url
        /// </summary>
        Task<UnaryResult<string>> AuthenticateWxOpenIdAsync();

        /// <summary>
        /// 获取用户网球水平
        /// </summary>
        /// <param name="userId">用户ID</param>
        Task<TennisLevelInfoDto> GetTennisLevelAsync(Guid userId);
    }
}
